The generation of color documents can be thought of as a two step process: first, the generation of the image by means of scanning an original document with a color image input terminal or scanner or, alternatively, creating a color image on a work station operated in accordance with a color image creation program; and secondly, printing of that image with a color printer in accordance with the colors defined by the scanner or computer generated image. Scanner output is commonly transformed to a color space of tristimulus values, i.e., RGB (red-green-blue). Commonly, these values are a linear transformation of the standard XYZ coordinates of CIE color space, or a corrected transform of those values. In the case of computer generated images, colors defined by the user at the user interface of a workstation can be defined initially in color space of tristimulus values. These colors are defined independently of any particular device, and accordingly reference is made to the information as being "device independent".
Printers often have an output which can be defined as existing in a color space called CMYK (cyan-magenta-yellow-key or black) which is uniquely defined for the printer by its capabilities and colorants. Printers operate by the addition of multiple layers of ink or colorant in layers to a page. The response of the printer tends to be relatively non-linear. These colors are defined for a particular device, and accordingly reference is made to the information as being "device dependent". Thus, while a printer receives information in a device independent color space, it must convert that information to print in a device dependent color space, which reflects the gamut or possible range of colors of the printer.
The desirability of operating in a device independent color space with subsequent conversion to a device dependent color space is well known, as shown by U.S. Pat. No. 4,500,919 to Schreiber and U.S. Pat. No. 2,790,844 to Neugebauer, and U.S. Pat. No. 4,275,413 to Sakamoto. There are many methods of conversion between color spaces, all of which begin with the measurement of printer response to certain input values. Commonly, a printer is driven with a set of input values reflecting color samples throughout the printer gamut, the color samples are printed in normal operation of the printer. As previously noted, most printers have non-linear response characteristics.
In U.S. Pat. No. 4,275,413 to Sakamoto, the information derived is placed into lookup tables, stored in a memory, perhaps ROM memory or RAM memory where the lookup table relates input color space to output color space. The lookup table is commonly a three dimensional table since color is defined with three variables. In RGB space, at a scanner or computer, space can be defined as three dimensional with black at the origin of a three dimensional coordinate system 0, 0, 0, and white at the maximum of a three dimensional coordinate system which an 8-bit system, would be located at 255, 255, 255. Each of the three axes radiating from the origin point therefore respectively define red, green, and blue. A similar construct can be made for the printer, with axes representing cyan, magenta, and yellow. In the 8-bit system suggested, there will be, however, over 16 million possible colors (2563). There are clearly too many values for a 1:1 mapping of RGB to CMY. Accordingly, as proposed in U.S. Pat. No. 4,275,413 to Sakamoto, only a relatively small number of samples are used to do the mapping from RGB to CMY, perhaps on the order of 1,000. Therefore, the lookup tables consist of a set of values which could be said to be the intersections for corners of a set of cubes mounted on top of one another. Colors falling within each cubic volume can be interpolated from the measured values, through many methods including tri-linear interpolation, tetrahedral interpolation, polynomial interpolation, linear interpolation, and any other interpolation method depending on the desired speed and accuracy of the result.
It would be very easy to index device dependent color values or specifications to device independent color specifications, but that is not the requirement. Instead, device independent specifications must be mapped to device dependent specifications. Several problems arise. Of course, the primary problem is that the printer response is not a linear response. A second problem is that the color space, and therefore the coordinates defined in the color space must be maintained as a uniform grid, for maximum efficiency of some interpolation methods, particularly for tetrahedral interpolation, a very desirable method of interpolation.
Accordingly, a three dimensional look up table (LUT) may be constructed which puts device independent input values into a predictable grid pattern. One method of accomplishing this requirement is by an interpolation process which derives a value at a desired location as a function of all (or a significant set) of measured color values. One way of doing this is to use Shepard's Method (see, for example "Shepard's Method of `Metric Interpolation` to Bivariate and Multivariate Interpolation" by W. Gordon and J. Wixom, Mathematics of Computation, Vol. 32, No. 141, January 1978, pp. 253-264). Shepard's Method suggests that a vector can be thought of as defining the difference between an asked-for color which was directed to a printer in the printed color. Then, for any other point in color space which is desired, that point can be thought of as a vector quantity, derived by averaging over the space all the vectors, each vector weighted by a function which decreases its effect on the vector as that vector is further and further away from the point coloring question. In one useful formula, each vector is weighted by a function of .sup.1 /.sub.d.spsb.4.
Alternatively the method of Po-Chieh Hung, "Colorimetric Calibration for Scanners and Media", SPIE, Vol. 1448, Camera and input Scanner System, (1991), describes a method of inverse tetrahedral interpolation, to the same effect as the described Shepard's Method (see also U.S. Pat. No. 5,296,923 to Hung, previously incorporated by reference for its teachings). A requirement of this method is that the color space be segmented into a set of non-overlapping, space-filling tetrahedrons. This segmentation requirement is fulfilled by using only data from a full rectangular array of points, where it is easy to define the mesh of points which define the tetrahedrons.
A problem encountered in the calibration process is that of having most colors being reproduced successfully, but having a few regions of color space that are not well behaved in terms of the empirically derived calibration model. The addition of a few more calibration points in these poorly behaved areas, would appear to be a solution to the problem. However, because inverse tetrahedral interpolation requires a full rectangular grid of data points, to obtain the "few more calibration points" in the poorly behaved areas really requires the addition of hundreds of more calibration points. FIG. 1 illustrates the problem in two dimensions for simplicity, where a, b, c and d represent colors which reproduce successfully in a color space transformation, while point e does not. Adding points P.sub.i, as in FIG. 1A presumably would resolve the reproduction problem, but that arrangement does not provide a color space which is readily segmentable into a set of non-overlapping, space-filling tetrahedrons. This segmentation requirement is fulfilled by using only data from a full rectangular array of points.
The references cited herein are incorporated by reference for their teachings.